;;;subroutine for arcsine.  requires a sine value as input with the function call
;;;COND traps for limits of function (0, 1, -1) and returns the correct value.
(defun asin (sine_val / )
  (setq sine_limit (* PI 0.5))
  (cond ((zerop sine_val) 0.0)
        ((eq sine_val 1.0)  sine_limit)
	((eq sine_val -1.0) (- sine_limit))
        (T (atan sine_val (sqrt (- 1.0 (* sine_val sine_val)))))
  )
)